As the need for software solutions increases, it becomes increasingly important to increase programmer efficiency. One way to increase programmer efficiency is to make software tools smarter and more convenient for the programmer to use. Development environments are beginning to offer help to ease programming tasks. Some development environments have a feature that provides context-sensitive help as the user types. For example, if the user declares an instance of an object of a specific type, and then begins typing a line of code that references that object, the source code editor may display a list of valid properties, methods and events for the object. Selecting from the drop-down list may insert the member into the user's code, saving the programmer keystrokes, reducing typing errors and helping the programmer understand the code he is using. These and other smarter software development tools are described in U.S. Pat. No. 6,311,323 B1 issued Oct. 30, 2001, entitled “Computer Programming Language Statement Building and Information Tool”, and U.S. Pat. No. 6,502,233 issued Dec. 31, 2002 entitled “Automated Help Information for Reference Information”, U.S. Pat. No. 6,305,008 B1, issued Oct. 16, 2001 entitled “Automatic Statement Completion”, U.S. patent application Ser. No. 10/218,222, filed Aug. 12, 2002, entitled “System and Method for Context-Sensitive Help in a Design Environment” and U.S. patent application Ser. No. 10/218,142, filed Aug. 12, 2002, entitled “System and Method for Browse Information Parsing without Compilation”.
Existing tools, however, are insufficient. Although computers are uniquely suited to store and retrieve large quantities of information, typically computers are information parsimonious—that is, they throw away information they have collected instead of remembering it and using it to lighten the burden of the user. For example, instead of just displaying a list of valid members when a user has entered a reference, it would be helpful if a software tool could predict which element in the list is most likely to be selected by the user and pre-select that element so that the programmer has to type fewer characters and is less likely to make a logic or typing error.